#ifndef DW_GRAPHICS_CAMERA_INL
#	define DW_GRAPHICS_CAMERA_INL

namespace dw {
	namespace graphics {

inline Camera::Camera()
:	m_fov(maths::pi * 0.25f)
,	m_aspectRatio(4.0f / 3.0f)
,	m_nearClipDist(1.0f)
,	m_farClipDist(10000.0f)
{
}

inline Camera::Camera(const Camera& ref)
:	m_fov(ref.m_fov)
,	m_aspectRatio(ref.m_aspectRatio)
,	m_nearClipDist(ref.m_nearClipDist)
,	m_farClipDist(ref.m_farClipDist)
{
}

/*virtual*/ inline Camera::~Camera()
{
}

/*virtual*/ inline Object::Type Camera::getType() const
{
	return Object::CAMERA;
}

inline void Camera::setAspectRatio(float aspectRatio)
{
	m_aspectRatio = aspectRatio;
}

inline void Camera::setFOV(float fov)
{
	m_fov = fov;
}

inline void Camera::setNearClipDist(float nearClipDist)
{
	m_nearClipDist = nearClipDist;
}

inline void Camera::setFarClipDist(float farClipDist)
{
	m_farClipDist = farClipDist;
}

inline float Camera::getFov() const
{
	return m_fov;
}

inline float Camera::getAspectRatio() const
{
	return m_aspectRatio;
}

inline float Camera::getNearClipDist() const
{
	return m_nearClipDist;
}

inline float Camera::getFarClipDist() const
{
	return m_farClipDist;
}

inline maths::Matrix4f Camera::getProjectionMatrix() const
{
	return dw::maths::Matrix4f::perspective(m_fov, m_aspectRatio, m_nearClipDist, m_farClipDist);
}

	} // namespace graphics
} // namespace dw

#endif // !DW_GRAPHICS_CAMERA_INL
